package com.xwj.coupon.user.service;

import com.xwj.coupon.user.dto.req.CouponCreatePaymentReqDTO;
import com.xwj.coupon.user.dto.req.CouponProcessPaymentReqDTO;
import com.xwj.coupon.user.dto.req.CouponProcessRefundReqDTO;

import java.util.List;
import java.util.Map;

/**
 * @Author: XuWenjie
 * @Date: 2025-08-21
 * @Description: CouponSettlementService
 */
public interface CouponSettlementService {

    /**
     * 创建优惠券结算单记录
     *
     * @param requestParam 创建优惠券结算单请求参数
     */
    void createPaymentRecord(CouponCreatePaymentReqDTO requestParam);

    /**
     * 处理订单支付操作，修改结算单为已支付
     *
     * @param requestParam 处理优惠券结算单请求参数
     */
    void processPayment(CouponProcessPaymentReqDTO requestParam);

    /**
     * 处理订单退款操作，修改结算单为已退款并回滚优惠券
     *
     * @param requestParam 处理优惠券结算单退款请求参数
     */
    void processRefund(CouponProcessRefundReqDTO requestParam);

    Map<Long,Long> computeCouponAmount(List<Long> couponIds, Long goodAmount);

}
